/**
 * 项目数据结构定义
 * 为不同方案类型定义独立的数据结构模型
 */

// 项目基本数据结构（所有项目类型共享的基础字段）
const BASE_PROJECT_SCHEMA = {
    // 基础标识信息
    _id: 'string|true',
    PID: 'string|true|comment=项目编号',
    PROJECT_TITLE: 'string|true|comment=项目名称',
    PROJECT_CODE: 'string|true|comment=项目代码',
    PROJECT_TYPE: 'number|true|comment=项目类型ID',
    PROJECT_TYPE_NAME: 'string|true|comment=项目类型名称',
    PROJECT_CUSTOMER_NAME: 'string|true|comment=客户名称',
    PROJECT_DESC: 'string|false|comment=项目描述',
    
    // 项目基本参数
    priority: 'string|true|comment=优先级', // low, normal, high
    startDate: 'number|true|comment=开始时间', // 时间戳
    deadline: 'number|true|comment=截止时间', // 时间戳
    hasSample: 'string|false|comment=有无样机', // 有/无
    sampleCount: 'string|false|comment=样品需求量',
    sampleImages: 'array|false|default=[]|comment=样品图片',
    
    // 状态信息
    PROJECT_STATUS: 'number|true|comment=状态码', 
    PROJECT_STATUS_NAME: 'string|true|comment=状态名称',
    PROJECT_STATUS_DESC: 'string|false|comment=状态描述',
    PROJECT_SUB_STATUS: 'number|false|comment=子状态码',
    subStatus: 'string|false|comment=子状态名称',
    PROJECT_ACTIVE: 'number|true|comment=是否活跃',
    PROJECT_ACTIVE_STATUS: 'number|true|comment=活跃状态',
    
    // 时间信息
    ADD_TIME: 'number|true|comment=创建时间',
    EDIT_TIME: 'number|true|comment=编辑时间',
    createTime: 'number|true|comment=创建时间',
    updateTime: 'number|true|comment=更新时间',
    
    // 管理信息
    PROJECT_MANAGER_ID: 'string|false|comment=项目经理ID',
    PROJECT_MANAGER_NAME: 'string|false|comment=项目经理名称',
    department: 'string|false|comment=所属部门',
    leader: 'string|false|comment=负责人',
    APPLICANT_NAME: 'string|true|comment=申请人',
    APPLICANT_ID: 'string|true|comment=申请人ID',
};

/**
 * 霍尔传感器项目数据结构
 * 霍尔类型项目只有基础信息，没有额外参数
 */
const HALL_PROJECT_SCHEMA = {
    ...BASE_PROJECT_SCHEMA,
    // 霍尔传感器没有额外参数字段
};

/**
 * 磁编传感器项目数据结构
 * 磁编类型项目只有基础信息，没有额外参数
 */
const MAGNETIC_ENCODER_PROJECT_SCHEMA = {
    ...BASE_PROJECT_SCHEMA,
    // 磁编传感器没有额外参数字段
};

/**
 * 电机控制类项目数据结构
 * 包含特定的电机控制参数
 */
const MOTOR_CONTROL_PROJECT_SCHEMA = {
    ...BASE_PROJECT_SCHEMA,
    
    // 工作环境和认证
    workTemp: 'string|false|comment=工作环境温度',
    certification: 'string|false|comment=认证要求',
    conformalCoating: 'string|false|comment=三防漆要求',
    
    // 电机参数
    lowPower: 'string|false|comment=低功耗要求',
    startupTime: 'string|false|comment=启动时间要求',
    ratedVoltage: 'string|false|comment=额定电压',
    maxPower: 'string|false|comment=最大功率',
    maxSpeed: 'string|false|comment=最高转速',
    polePairs: 'string|false|comment=极对数',
    hasHall: 'string|false|comment=霍尔传感器',
    hasFG: 'string|false|comment=频率发生器',
    
    // 控制参数
    controlMode: 'string|false|comment=控制模式',
    controlAlgorithm: 'string|false|comment=控制算法',
    rotation: 'string|false|comment=旋转方向',
    hasBrake: 'string|false|comment=刹车功能',
    
    // 保护参数
    stallProtection: 'string|false|comment=堵转保护',
    overvoltageProtection: 'string|false|comment=过压保护',
    undervoltageProtection: 'string|false|comment=欠压保护',
    temperatureProtection: 'string|false|comment=温度保护',
    overcurrentProtection: 'string|false|comment=过流保护',
    currentLimitProtection: 'string|false|comment=限流保护',
    blockageProtection: 'string|false|comment=堵孔/空转保护',
    phaseProtection: 'string|false|comment=缺相保护',
};

/**
 * 吸尘器项目数据结构
 */
const VACUUM_PROJECT_SCHEMA = {
    ...BASE_PROJECT_SCHEMA,
    
    // 工作环境和认证
    workTemp: 'string|false|comment=工作环境温度',
    certification: 'string|false|comment=认证要求',
    conformalCoating: 'string|false|comment=三防漆要求',
    
    // 吸尘器特有参数
    suctionPower: 'string|false|comment=吸力',
    airVolume: 'string|false|comment=风量',
    dustCapacity: 'string|false|comment=尘桶容量',
    filterType: 'string|false|comment=过滤系统',
    noiseLevel: 'string|false|comment=噪音级别',
    
    // 电机参数
    lowPower: 'string|false|comment=低功耗要求',
    startupTime: 'string|false|comment=启动时间要求',
    ratedVoltage: 'string|false|comment=额定电压',
    maxPower: 'string|false|comment=最大功率',
    maxSpeed: 'string|false|comment=最高转速',
    
    // 控制参数
    controlMode: 'string|false|comment=控制模式',
    controlAlgorithm: 'string|false|comment=控制算法',
    
    // 保护参数
    stallProtection: 'string|false|comment=堵转保护',
    overvoltageProtection: 'string|false|comment=过压保护',
    undervoltageProtection: 'string|false|comment=欠压保护',
    temperatureProtection: 'string|false|comment=温度保护',
    overcurrentProtection: 'string|false|comment=过流保护',
};

/**
 * 风机项目数据结构
 */
const FAN_PROJECT_SCHEMA = {
    ...BASE_PROJECT_SCHEMA,
    
    // 工作环境和认证
    workTemp: 'string|false|comment=工作环境温度',
    certification: 'string|false|comment=认证要求',
    conformalCoating: 'string|false|comment=三防漆要求',
    
    // 风机特有参数
    airFlow: 'string|false|comment=风量',
    staticPressure: 'string|false|comment=静压',
    fanType: 'string|false|comment=风扇类型',
    bladeMaterial: 'string|false|comment=扇叶材质',
    noiseLevel: 'string|false|comment=噪音级别',
    
    // 电机参数
    lowPower: 'string|false|comment=低功耗要求',
    startupTime: 'string|false|comment=启动时间要求',
    ratedVoltage: 'string|false|comment=额定电压',
    maxPower: 'string|false|comment=最大功率',
    maxSpeed: 'string|false|comment=最高转速',
    
    // 控制参数
    controlMode: 'string|false|comment=控制模式',
    controlInterface: 'string|false|comment=控制接口类型',
    speedControl: 'string|false|comment=调速方式',
    
    // 保护参数
    stallProtection: 'string|false|comment=堵转保护',
    overvoltageProtection: 'string|false|comment=过压保护',
    undervoltageProtection: 'string|false|comment=欠压保护',
    temperatureProtection: 'string|false|comment=温度保护',
};

/**
 * 水泵项目数据结构
 */
const PUMP_PROJECT_SCHEMA = {
    ...BASE_PROJECT_SCHEMA,
    
    // 工作环境和认证
    workTemp: 'string|false|comment=工作环境温度',
    certification: 'string|false|comment=认证要求',
    conformalCoating: 'string|false|comment=三防漆要求',
    waterproofLevel: 'string|false|comment=防水等级',
    
    // 水泵特有参数
    flowRate: 'string|false|comment=流量',
    maxHead: 'string|false|comment=最大扬程',
    pumpType: 'string|false|comment=泵类型',
    impellerType: 'string|false|comment=叶轮类型',
    inlet: 'string|false|comment=进水口规格',
    outlet: 'string|false|comment=出水口规格',
    
    // 电机参数
    lowPower: 'string|false|comment=低功耗要求',
    startupTime: 'string|false|comment=启动时间要求',
    ratedVoltage: 'string|false|comment=额定电压',
    maxPower: 'string|false|comment=最大功率',
    maxSpeed: 'string|false|comment=最高转速',
    
    // 控制参数
    controlMode: 'string|false|comment=控制模式',
    controlInterface: 'string|false|comment=控制接口类型',
    
    // 保护参数
    dryRunningProtection: 'string|false|comment=干运行保护',
    overvoltageProtection: 'string|false|comment=过压保护',
    undervoltageProtection: 'string|false|comment=欠压保护',
    temperatureProtection: 'string|false|comment=温度保护',
    overflowProtection: 'string|false|comment=溢水保护',
};

/**
 * 通用项目数据结构（其他类型）
 */
const OTHER_PROJECT_SCHEMA = {
    ...BASE_PROJECT_SCHEMA,
    
    // 工作环境和认证
    workTemp: 'string|false|comment=工作环境温度',
    certification: 'string|false|comment=认证要求',
    conformalCoating: 'string|false|comment=三防漆要求',
    
    // 自定义参数（可根据实际项目扩展）
    customParams: 'object|false|default={}|comment=自定义参数',
};

// 导出所有项目类型的数据结构
module.exports = {
    BASE_PROJECT_SCHEMA,      // 基础项目结构
    HALL_PROJECT_SCHEMA,      // 霍尔传感器项目
    MAGNETIC_ENCODER_PROJECT_SCHEMA, // 磁编传感器项目
    MOTOR_CONTROL_PROJECT_SCHEMA,    // 电机控制项目
    VACUUM_PROJECT_SCHEMA,    // 吸尘器项目
    FAN_PROJECT_SCHEMA,       // 风机项目
    PUMP_PROJECT_SCHEMA,      // 水泵项目
    OTHER_PROJECT_SCHEMA,     // 其他通用项目
    
    // 根据方案类型获取对应的数据结构
    getProjectSchemaByType: function(type) {
        const typeMap = {
            '霍尔': HALL_PROJECT_SCHEMA,
            '磁编': MAGNETIC_ENCODER_PROJECT_SCHEMA,
            '电机控制': MOTOR_CONTROL_PROJECT_SCHEMA,
            '吸尘器': VACUUM_PROJECT_SCHEMA,
            '风机': FAN_PROJECT_SCHEMA,
            '水泵': PUMP_PROJECT_SCHEMA,
        };
        
        return typeMap[type] || OTHER_PROJECT_SCHEMA;
    }
}; 